繁体   English   中英

Python:以多线程打印

[英]Python : printing in multiple threads

我有一个基于Twisted的网络系统的实现。 我注意到当我在一个新线程(而不是主线程)中运行一个函数(它进行一些数学运算并打印结果)时, print函数会导致Segmentation fault 可能吗? 有没有选择避免这种情况?

我的方法,基于Bram Cohen的建议

定义全局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

在线程中打印时需要使用线程锁。 例:

lock = Lock()

lock.acquire() # will block if lock is already held
print("something")
lock.release()

通过这种方式,多个线程不会同时使用资源(在本例中为print)。 使用线程锁就像将注意力集中在获取锁的线程上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM