简体中文
Telegram

讨论串 سلام من این کدو نوشتم تا زمان اجرای هر thread رو ببینم، بر خلاف تصور هر اجرای thread دقیقا یک ثانیه بعد انجام نمیشه و گا…

9 条消息 · –
Z
سلام من این کدو نوشتم تا زمان اجرای هر thread رو ببینم، بر خلاف تصور هر اجرای thread دقیقا یک ثانیه بعد انجام نمیشه و گاهیی بیشتر از 1 و گاهی کمتر از 1 ثانیه طول میکشه، کسی میدونه چرا؟ import threading import time i=0 def task(): global t_period t_period1 = time.time() - t_period t_period = time.time() t=threading.Timer(1,task) t.start() print( t_period1 ) t_period = time.time() t=threading.Timer(1,task) t.start()
  1. 已
    فک کنم درگیر race condition باشه و اینکه thread های پایتون روی یه core اجرا میشن و همزمانی ندارن معمولا 🧐
  2. M
    ثرد ها در پایتون باید GIL رو acquire و release کنن برای همین
    1. Z
      میشه لطفا واضح تر بگید، من متوجه نشدم😶
      1. M
        پایتون یک مکانیزم برای مدیریت حافظه داره به اسم Global interpreter lock یا GIL این گیل یک نوع قفل هست و نمیذاره همزمان دو تا ثرد به آبجکت‌های پایتون در مموری دسترسی داشته باشن برای همین هر ثرد که میخواد اجرا بشه گیل رو میگیره دستش (acquire) و بعدش ولش میکنه release این کار هزینه‌بر هست و خوبی‌ها و بدی‌های خودش رو داره
      2. 已
        ببین وقتی اون thread تو دست میذاره رو یجای حافطه که ازش variable رو بخونه. اونجا رو قفل میکنه سیستم تا باعث مشکلات بیشتری نشه. اگه اینکارو نکنه و دو thread باهم یه مقداری رو تغییر بدن کار بهم مخوره مثلا thread اول مقدار ۵ رو میخونه همزمان thread دوم هم نقدار ۵ رو از حافظع میخونه حالا تو مرحله بعد اولی ۲ تا اضافه میکنه بهش.. مقدارش میشه ۷ حالا ۷ رو میذاره توی اون variable همینجا دومی همزمان ۳ تا از اون عدد ۵ ای که خونده بود کم میکنه و میشه ۲ حالا ۲ رو میذاره توی اونجای حافظه و اینجا کاملا اون مقداری که اولی نوشته بود و رونویسی میکنه برای همین قفلش میکنن منابع رو تا در آن واحد ینفر بیشتر بهش دسترسی نداشته باشه تا از این مشکلا جلوگیری شه
PPython + Linux ExpertsPython + Linux Experts@PythonLinuxExperts · 群组 · 科技
4 287成员1930 天内发言的人
社群信息流 在 Telegram 中打开

来自搜索索引的公开信息流 ChatCrawler ——“公开 Telegram 的 Google”;随着该社群被抓取而更新。 时间为 UTC。

仅限公开内容,使用 Telegram 官方 API。 关于 · 常见问题 · 索引限制 · 移除页面 · 目录 · 搜索 · 计算方法