多进程多线程的坑

本文通过一个具体的Python示例介绍了如何使用多进程和多线程来执行任务,并对比了两者在共享数据方面的差异。示例中定义了一个Job类,包含运行循环和打印实例属性的方法,在主函数中创建了进程或线程来调用这些方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from multiprocessing import Process
import threading
import time


class Job:

    def __init__(self):
        self.a = 'a'

    def run(self):
        self.b = 'b'
        while True:
            print(self.__dict__)
            print(id(self))
            time.sleep(2)

    def fun(self):
        print(self.b)


def main():
    job = Job()
    p = Process(target=job.run)
    # p = threading.Thread(target=job.run)
    p.daemon = True
    p.start()
    while True:
        raw = input()
        if raw.strip() == 'b':
            print(job.b)  # 多进程多线程结果不同,有惊喜呦~
            # job.fun()
        else:
            print('main job: {}'.format(job.__dict__))
            print('main id: {}'.format(id(job)))
        # time.sleep(10)
        # print(job.b)


if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值