Python:在多线程中打印

2022-02-25 00:00:00 python python-2.7 twisted thread-safety

问题描述

我有一个基于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

相关文章