bom pessoal então estamos de volta vamos então dar continuidade àquele aquela aquela aula sobre trads né então a gente encerrou nessa imagem aqui que tá na tela que você tá vendo aí que é a ideia de uma tarefa né um programa em execução que tem três tarefas para serem executadas e que se fosse mono programado ter que executar uma por vez porém num sistema multi programado né se esse se essa tese né você se software for programado utilizando trads eu consigo fazer isso de forma concorrente ou simultânea se eu tiver mais de um núcleo claro
ou se monúcleo tiver mais trading e a gente chega aqui no resultado daquilo que foi proposto para ser feito nessa tarefa tá então para a gente traçar aqui uma diferença entre processos e trads eu trouxe alguns itens aqui que eu vou mostrar aqui para vocês que os processos são tipicamente Independentes né Cada processo tem seu endereçomento de memória né enquanto as trades são sub-rotinas deste processo tá e como Sub rotinas esse processo elas compartilham esse espaço de endereçamento tá essa memórias variáveis o contexto de software todo porém um processo não compartilha isso com outros tá
só as freds que tem acesso a esse contexto né do processo a qual ela se destina ok então um processo pode ter nhreds E essas vão compartilhar esse contexto do processo porém o processo não compartilha isso com nenhum outro ok os processos então tem espaço de endereçamento separado enquanto as trades Compartilha esse endereço foi que acabei de dizer né os processos como havia dito na aula passada só interagem entre outros processos se somente por mecanismos do próprio sistema tá então um processo a vai falar com o processo B ele precisa de um mecanismo é um
processo do seu operacional para fazer essa Comunicação tá Eles não conseguem se falar na memória eles não compartilham aquele contexto em memória tá a gente já falou sobre isso é um problema seria um problema de segurança né dentre outras coisas que poderiam acontecer ali e dá muito errado e as threads né o contexto ali das trades na troca de informação de transplantes é muito mais barata né entre aspas né é brush temporacional é mais viável do que fazer essa comunicação entre processos tá entre processos custa mais para o sistema operacional entre o trads custa menos
então o mesmo software claro vai depender muito da finalidade do sistema onde ele vai rodar da arquitetura né tudo mais mas via de regra se a gente conseguir programar um software utilizando trads né se ele tem tarefas para serem executadas E essas tarefas puderem ser executadas de forma concorrente ou simultânea contradis vai ser muito mais viável né vai ser muito mais barato para o sistema operacional do que né se a gente tivesse que executar vários processos desse mesmo software por isso que as tradições pouquinho mais viáveis tá então no ambiente Você já sabe né só
um programa por vez né só uma instrução por vez né aquela história num ambiente multicred ou multi programado né multiprogramado como né eu posso ter mais esses meus processos de memória podem executar sub-rotinas né ou tarefas de forma concorrente ou simultânea de acordo com o processador tá então via de regra eles são mais eficientes ok essa imagem aqui que tá na tela é demonstra essa relação entre processo e trade lembra que eu falei aqui do processo leve olha que o processo pesado ele é tudo isso aqui ó tá é tudo toda essa imagem né tudo
que engloba o processo por que que é trade é chamada de conhecida também como processo leve Apesar que é um jargão um pouco utilizado tá no meio as tradições mais conhecidos do que com um processos leves tá um livros realmente só como referência Nunca vi ninguém citando dessa forma mas por que essa ideia porque as trades seriam aqui uma fraçãozinha do que é esse processo todo só que sem só que as trades não tem que lidar né com essas burocracias do sistema operacional do contexto de hardware e software etc ela só compartilham isso então processos
mais leves porque elas não precisam lidar com essa burocracia do sistema operacional tá então você tem operacional se preocupa com o processo gera lá um processo pega lá né o contexto Nesse contexto de software vai ter lá as instruções do software que você está executando e esse processo é a interação né do que ser tá executando com operacional a trad seria uma Instância muito menor disso porém ela não precisa se preocupar né com toda essa questão do processo com essa interface costuma operacional a única coisa que ela vai fazer esse beneficiar do que está na
memória né do processo por isso que seria o processo mais leve tá então aqui eu tenho três trads na imagem né e é essa a relação tá desvantagem do uso de treads bom como você deve imaginar é muito difícil criar software que se beneficiam de forma correta de forma eficiente de Travis porque né porque porque vai depender do uso da arquitetura do ambiente né precisa ser todo pensado para que no final das contas não seja uma complicação e sim um ganho tá as vantagens de se usar trades não existe necessidade né de comunicação entre o
processo porque tá tudo dentro do mesmo processo a utilização de multi processadores para um mesmo processo então eu posso pegar o mesmo processo e utilizar vários processadores né vários núcleos para só aquele processo lá e eu vou ter uma eficiência maior naquele processo antes eu teria que fazer o que aumentar a memória RAM agora eu só escalo processamento né um programa pode ser continuar pode com pode continuar sendo executado Independente se alguma outra trad tiver que ser parada né se ela tiver esperando alguma coisa por exemplo lembra lá do exemplo do Word né enquanto o
Word tá fazendo salvamento automático ou você sei lá você tá fazendo uma busca no texto enfim né fazendo alguma coisa lá clicando em algum botão do menu ainda assim né todo o resto tá funcionando mas se alguma parte dele tivesse que ficar bloqueada por exemplo enquanto você tá clicando no menu Possivelmente você não consegue mexer na tela do documento né se você clicar na tela o menu fecha né mas se fosse se fosse possível as duas coisas aconteceriam ali ao mesmo tempo como é mais ou menos num Google Docs né você vai ver lá que
várias pessoas conseguem usar ao mesmo tempo tá E aí não necessariamente por conta de treads mas é um exemplo parecido tá mas se desse exemplo de trade alguma funcionalidade ficar se esperando né Por exemplo uma entrada do usuário ou salvar no HD por exemplo né então enquanto o Word está salvando todo documento você tá lá digitando normalmente então enquanto ele tá salvando ele não bloqueia a entrada de teclado ou o que tá vindo do mouse tá então é essa ideia de threads ok bom se ainda não consegui te convencer que tradi é legal né vamos
analisar Então porque não dividir o processo o processo em subprocessos né ou em processos menores né acho que já dá para ter uma ideia né a criação de um processo né e a mudança de contexto de um processo para o outro é Custoso né não é tão barato por ser um operacional fazer tá já com as trades é muito mais barato como a gente já viu né que a gente já discutiu isso lá atrás Então os atleds da forma correta é bem mais interessante do que ter um programa que vai fazer de forma para você
durar Porém precisa ser feito direito né não usar trades direito o que é bastante difícil né dependendo do tamanho do software vai impactar no programa ruim tá por isso que tem lá diversas formas de organizar o programa você já deve ter ouvido falar no mvc tem um mvt mvvm tem os design paternos né que são os padrões de projeto não só pelas questões né Não só por essa questão de trede né mas para manter o código de uma forma mais organizada e que com orientação objeto consegue delegar essas partes ali e transformar em trads seria
possível tá bom pessoal então vocês estão vendo aqui na tela já partimos aqui para para lá prática você pode dar um pause e copiar aqui é Python você já deve entendendo nós já vimos Python no semestre passado Então já não é um mistério tá então se você quiser copiar dá um pause e copia que o código que você vai conseguir executar também ok o que que eu vou ter aqui né eu tenho uma função né um DF tarefa nessa função tarefa que ele faz é inteirar de 0 a 4 né um Range de 5 você
sabe que vai de zero a quatro e ele vai mostrar lá tarefa zero tarefa um tarefa dois até o tarefa 4 tá E ela vai executar uma vez né uma interação por vez do jeito que a gente já fez anteriormente tá aqui eu não tenho nenhuma trade Então ela é monotred né Ela é uma single trad aqui tá então não tem nada de trade e eu tô falando para fazer isso e esperar um segundo Ok então vou sair aqui e vou executar ó tarefa 0 tarefa 1 tarefa 2 tarefa 3 né Ela é monotrad E
se a gente inspecionar se tá se eu voltar aqui ó se eu voltar aqui e editar esse número de segundos que ela tá esperando deixa eu colocar aqui sei lá uns 10 segundos aqui por exemplo e executar isso opa deixa eu executar aqui de novo vai demorar um pouco mais tá vou colocar esse background e vou procurar aqui o processo para a gente ver ó eu tenho um processo aqui executando tá é o processo do meu do meu programa tá então vou trazer ele para frente e vou parar Você já viu como que ele funciona
eu tenho um outro que é um multi trading se você quiser já sabe dar um pause para copiar aqui mas aqui já é um pouquinho mais complicado então deixei alguns comentários tá tem a mesma função vai ter a cinco vezes de 0 a 4 não rende de 5 espera 1 segundo e eu tenho aqui duas coisas diferentes né a tread aqui tô montando a trad né então eu utilizo uma biblioteca de trading tô usando ela aqui essa esse objeto tradge ele vai ser uma Instância de tread né trading aonde vai ser uma trade de tarefa
tá então essa esse objeto trad ele vai ser uma trade de tarefa dessa função que eu criei tá quando eu faço um tradi ponto start ele inicia e para demonstrar né eu sei que isso não é nada prático mas para só para demonstrar fora dessa função eu criei aqui no meu programa principal um outro uma outra interação que também vai de vai fazer assim por interações né de 0 a 4 e seria que o outra tarefa tá que também vai esperar um segundo Ok e aqui eu faço a espero pela conclusão da trading aí só
depois disso o programa fecha Mas vamos executar você vai entender aqui o que que vai acontecer tá Olha o que acontece agora tarefa 0 tarefa outra tarefa ó tá vendo o que que tá acontecendo aqui nota que tá acontecendo né [Música] deixa eu executar aqui novamente tá acontecendo de forma simultânea tá as tarefas estão na tarefazer e outra tarefa tarefa e outra tarefa tá acontecendo de forma simultânea tanto que olha aqui ó outra tarefa um outra tarefa 2 né foi mais rápido o programa externo do que atrás inclusive né mas nem sempre né aqui atrás
foi mais rápida né tarefa três e quatro tá então o que que demonstra isso né é uma demonstração simples de um programa monotrad e multi trading claro que aqui não tem muito sentido em só fazer duas interações diferentes mas é só para te mostrar como que essas trades funcionam eu vou fazer a mesma coisa aqui vou alterar aqui para cinco segundos por exemplo Sei lá o 10 segundos mesmo tá vou alterar aqui para 10 segundos se você quiser fazer esse teste aí também faça eu vou alterar aqui para 10 segundos tá e vou salvar o
que que vai acontecer agora vou executar Então tá lá demorando 10 segundos entre uma interação e outra vou colocar em background e vou procurar pelo processo se chama multi ó então tem aqui um processo Mude mas olha que interessante né o meu processo está executando duas coisas de forma simultânea Mas eu só tenho um único processo em execução no mono programado né no mono trad aliás se eu tivesse que olha é necessário ter que executar essas duas funcionalidades então teria que ter lá um programa um programa mestre né uma aplicação principal e essa aplicação principal
chamaria dois códigos diferentes e colocaria dois processos no céu operacional A não ser que eu rodasse isso contradis tá você pode notar isso por exemplo em até no navegador né tem que inspecionar coloca aí no Windows ou no Linux mesmo né no wsl Tenta abrir aqui alguma coisa por exemplo um navegador e vai dar uma olhada aqui nos processos né o navegador você não vai conseguir abrir mas tenta abrir aqui algum software um pouco mais implementado tá no Windows acho que dá para ver se você abrir um navegador você vai ver que tem vários processos
que iniciam por conta dele tá são vários processos da parte mas o próprio navegador né então o processo vai ter os processos filhos Tá mas ainda assim ele trabalha com trads então algumas para algumas funcionalidades as trads não se aplicam então ele faz aquele esquema né de iniciar outros códigos né colocar na memória outros códigos executar outros programas tá já sei lá quando a gente abre uma aba por exemplo né Essa aba vai iniciar processos tá muitas vezes mas ainda assim ele trabalha com trades eu não sei se o Word Por Exemplo né então teria
que fazer algum teste Mas se você tiver interesse abre lá um terminal né um terminal Linux está lá uma máquina virtual você já fez isso já em outras aulas lá em outras disciplinas e Tenta abrir lá um navegador ou sei lá um leitor de documentos um PDF qualquer coisa do tipo inspeciona Procura lá se os processos filhos se tem processos filhos né e né E vai constatar isso Tá Mas aqui é isso tá deixa eu rodar aqui de novo ele ainda tá na memória porque tá demorando lá né os 10 segundos entre cada interação vou
trazer ele para frente agora e ele tá aqui ó eu trouxe ele e ele tá numa pausa esperando né ó Opa Inclusive acho que iniciou de novo né ah não ele tava esperando né Então é isso tá Por mais que ele tá executando mais de uma tarefa ao mesmo tempo eu não tenho outros processos em execução não tem o processo filho né a gente já falou sobre o processo filho anteriormente o que ele tá fazendo é trabalhar com uma linha paralela de programação né então um processo tá na memória que aquele processo multi.pie Nesse contexto
Ele tá trabalhando com linhas e trads e o processador da máquina na qual Estou trabalhando aqui tá lidando com isso tá então eu não sei exatamente aqui ó ele é um Core i7 né então que significa ele tem sete núcleos né Não sei se não sei se é exatamente ele tem 7 núcleos ou se são sete prédios né não sei teria que ver a especificação aqui mas acho que são sete núcleos né não sei se vai saber melhor aí se você dá uma olhada na Intel mas é um processador mais avançado né Ele tem ele
é um processador melhor ele tem recursos então ele tem trads então o que tá acontecendo aqui é uma divisão dessas né o sistema operacional encontrou a minha instrução de trade e tá dividindo as operações entre essas linhas OK bom pessoal é isso que eu tenho para falar de trads vai ter uma coisinha ou outra ainda para a gente tratar em outras aulas mas essa aula fica por aqui espero que você tenha aproveitado e qualquer dúvida né só deixar o comentário lá né ou procurar que a gente tira todas as dúvidas ok valeu muito obrigado tenta
executar os códigos aí você vai você vai achar legal isso aí também tá valeu gente muito obrigado