鱼C论坛

 找回密码
 立即注册
查看: 2667|回复: 6

求助django项目中运行python程序的问题

[复制链接]
发表于 2022-4-21 14:31:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def fileChecker(path):
    print('Child process %s.' % os.getpid())
    dirs = os.listdir(path)
    size = len(dirs)
    
    while True :
        tdirs = os.listdir(path)
        if len(tdirs) > size :
            time.sleep(5)
            filename = tdirs[-1]
            print( filename )

        size = len(tdirs)
        dirs = tdirs
        

if __name__ == '__main__':    
    print('Parent process %s.' % os.getpid())
    p1 = Process( target=main )
    p2 = Process( target=fileChecker, args=('./pictures/car_img',))
    p1.start()  
    p2.start()
    p1.join()
    p2.join()
  


为何fileChecker中每次print都会输出两次

本帖被以下淘专辑推荐:

  • · django|主题: 61, 订阅: 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-4-22 23:29:23 | 显示全部楼层
代码发全,main函数呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-23 14:38:27 | 显示全部楼层
suchocolate 发表于 2022-4-22 23:29
代码发全,main函数呢?

main就是django默认的,没有动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-23 15:04:06 | 显示全部楼层
qaz7327 发表于 2022-4-23 14:38
main就是django默认的,没有动

代码不全
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-23 16:02:16 | 显示全部楼层
#!/usr/bin/env python
"""Django's command-line utility for administrative tasks."""
import os,sys,time

from matplotlib.cbook import print_cycles
from plate_detect import imgChecker,getPlate
from multiprocessing import Process,Queue,Pool
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import threading 



def fileChecker(path):
    cnt = 0 
    print('Child process %s.' % os.getpid())
    dirs = os.listdir(path)
    size = len(dirs)
    
    while True :
        lock.acquire()

        tdirs = os.listdir(path)
        if len(tdirs) > size :
            time.sleep(5)
            filename = tdirs[-1]
            print( filename )
            cnt += 1 
            print( 'cnt:%s'%(cnt) )

        size = len(tdirs)
        dirs = tdirs
        
        lock.release()



def main():
    """Run administrative tasks."""
    print('Child process %s.' % os.getpid())
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'parkSystem.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc

    execute_from_command_line(sys.argv)
    


if __name__ == '__main__':    
    print('Parent process %s.' % os.getpid())
    p1 = Process( target=main )
    p2 = Process( target=fileWatcher, args=('.\\pictures\\car_img',))
    #p2 = Process( target=imgChecker, args=('./pictures/car_img',))
    p1.start()  
    p2.start()
    p1.join()
    p2.join()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-25 00:37:26 | 显示全部楼层
从代码逻辑看,只有列表tdirs的长度比dirs长度大,就会打印。
而dirs和tdirs的长度要取决于你这个./pictures/car_img 文件夹运行时文件的情况,这个是是代码中看不出来的。
你运行时观察一下文件中文件的情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-25 10:59:17 | 显示全部楼层
本帖最后由 qaz7327 于 2022-4-25 11:01 编辑
suchocolate 发表于 2022-4-25 00:37
从代码逻辑看,只有列表tdirs的长度比dirs长度大,就会打印。
而dirs和tdirs的长度要取决于你这个./pictur ...


我这代码是想在文件夹放入新文件时输出文件名,但是不知道为啥运行时输出了两遍

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 16:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表