会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132648个问题
Python 全系列/第三阶段:Python 网络与并发编程/网络通信 467楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 468楼

老师你好,34行的wait()语句他可以自己单独调用的吗,还是跟23行里面的sleep(6)有关联的,程序开始运行的时候调用了ti,t2线程打印 车开走了和等车 这2句话,一起等待了6秒之后才变为True,有点没搞懂

from threading import Thread
from threading import Event
from time import sleep
'''
1.Event()可以创建一个事件管理标志,该标志(event)默认为False。
2.event.wait(timeout=None):调用该方法的线程会被阻塞,如果设置了,
  timeout 参数,超时后,线程会停止阻塞继续执行;
'''
def car():
    #global count
    num=0
    while True:
        if even.is_set(): #判断event的标值是否为True
            print('车已经到站,可以上车')
            sleep(1)
            #count=count+1
            num=num+1
            if num % 5  == 0:
                even.clear() #将event设置为False

        else:
            print('车开走了...')
            sleep(6)
            #count=1
            even.set()  #将event设置为True

def person():
    while True:
        if even.is_set():
            print('上车')
            sleep(1)
        else:
            print('等车')
            even.wait()
            #sleep(1)

if __name__=='__main__':
    even=Event()
    #count=1
    t1=Thread(target=car)
    t2=Thread(target=person)
    t1.start()
    t2.start()


Python 全系列/第三阶段:Python 网络与并发编程/并发编程 472楼

from multiprocessing import Process
from time import sleep

class Myprocess(Process):
    def __init__(self,name):#这个name就是类里面的参数
        Process.__init__(self)
        self.name=name
    def run(self):#这个self就不需要再写个namae了 因为上面有了
        print(f"Process:{self.name}start")
        
p1=Myprocess('pcl')

p1.start()

    老师 请问报错里 为什么会出现几百行的错误 我的代码都没有那么多行


C:\Users\pcl\venv\Scripts\python.exe "C:/Users/pcl/.1aPython all exercise/线程与进程/进程实现/进程类包装.py"

Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 116, in spawn_main

    exitcode = _main(fd, parent_sentinel)

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 125, in _main

    prepare(preparation_data)

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 236, in prepare

    _fixup_main_from_path(data['init_main_from_path'])

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path

    main_content = runpy.run_path(main_path,

  File "C:\Users\pcl\lib\runpy.py", line 268, in run_path

    return _run_module_code(code, init_globals, run_name,

  File "C:\Users\pcl\lib\runpy.py", line 97, in _run_module_code

    _run_code(code, mod_globals, init_globals,

  File "C:\Users\pcl\lib\runpy.py", line 87, in _run_code

    exec(code, run_globals)

  File "C:\Users\pcl\.1aPython all exercise\线程与进程\进程实现\进程类包装.py", line 13, in <module>

    p1.start()

  File "C:\Users\pcl\lib\multiprocessing\process.py", line 121, in start

    self._popen = self._Popen(self)

  File "C:\Users\pcl\lib\multiprocessing\context.py", line 224, in _Popen

    return _default_context.get_context().Process._Popen(process_obj)

  File "C:\Users\pcl\lib\multiprocessing\context.py", line 327, in _Popen

    return Popen(process_obj)

  File "C:\Users\pcl\lib\multiprocessing\popen_spawn_win32.py", line 45, in __init__

    prep_data = spawn.get_preparation_data(process_obj._name)

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 154, in get_preparation_data

    _check_not_importing_main()

  File "C:\Users\pcl\lib\multiprocessing\spawn.py", line 134, in _check_not_importing_main

    raise RuntimeError('''

RuntimeError: 

        An attempt has been made to start a new process before the

        current process has finished its bootstrapping phase.


        This probably means that you are not using fork to start your

        child processes and you have forgotten to use the proper idiom

        in the main module:


            if __name__ == '__main__':

                freeze_support()

                ...


        The "freeze_support()" line can be omitted if the program

        is not going to be frozen to produce an executable.


Process finished with exit code 0


Python 全系列/第三阶段:Python 网络与并发编程/并发编程 473楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 474楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637