Python:在多线程中打印
问题描述
我有一个基于Twisted的网络系统的实现。我注意到,当我在新线程而不是主线程中运行函数(执行一些数学运算并打印结果)时,print
函数导致Segmentation fault
。有可能吗?是否有避免这种情况的选项?
解决方案
我的方法,基于Bram Cohen's suggestion:
定义全局Lock
变量
from threading import Lock
s_print_lock = Lock()
定义要使用Lock调用print
的函数
def s_print(*a, **b):
"""Thread safe print function"""
with s_print_lock:
print(*a, **b)
在您的线程中使用s_print
而不是print
。
相关文章